package com.product.android.business.login;

import com.product.android.business.ApplicationVariable;
import com.product.android.utils.SharedPreferenceHelper;


/**
 * ClassName:LoginFlag
 * Function: 表示登录状态的标志位,用于软件启动的时候判断是否需要登录
 * Reason:	 
 * @author   cb		
 * @version  Ver 1.3.3_modularization
 * @Date	 2014	2014-2-24		下午3:45:02
 *
 * @see 	 
 */
public enum LoginFlag {
	//DEFAULT:第一次登录或者是用户点击切换帐号
	//LOGIN登录完成且未被切换帐号的状态，表示可以后台登录，在用户登录完成之后设置
	//EXIT用户点击退出软件的状态，目前和LOGIN一样，都表示可以后台登录
	DEFAULT(0), LOGIN(1), EXIT(2);

	private int mValue;

	LoginFlag(int value) {
		mValue = value;
	}

	public int getValue() {
		return mValue;
	}

	public static LoginFlag value2Flag(int value) {
		LoginFlag[] array = LoginFlag.values();
		for (LoginFlag flag : array) {
			if (flag.mValue == value) {
				return flag;
			}
		}
		return LoginFlag.DEFAULT;
	}
	
    /**
     * 
     * @n<b>函数名称</b>     :getLoginFlag
     * @brief                从配制文件中取中LoginFlag
     * @see 
     * @since    Ver 1.1
     * @param  @return
     * @return LoginFlag
     * @<b>作者</b>          :  zhy
     * @<b>创建时间</b>      :  2014-5-26上午10:59:25
     */
	public static LoginFlag  getLoginFlag(){
		int value = SharedPreferenceHelper.getInstance(ApplicationVariable.INSTANCE.applicationContext)
		.loadIntKey(SharedPreferenceHelper.CONFIG_LOGIN_FLAG,
				LoginFlag.DEFAULT.getValue());
        return  value2Flag(value);	
	}
	
	/**
	 * 
	 * @n<b>函数名称</b>     :saveLoginFlag
	 * @brief                保存登录类型
	 * @see
	 * @since    Ver 1.1
	 * @param  @param loginflag
	 * @return void
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-5-26上午11:03:10
	 */
	private static void saveLoginFlag(LoginFlag loginflag){
		SharedPreferenceHelper.getInstance(ApplicationVariable.INSTANCE.applicationContext).saveIntKey(
				SharedPreferenceHelper.CONFIG_LOGIN_FLAG,
				loginflag.getValue());
	}
	
	/**
	 * 
	 * @n<b>函数名称</b>     :saveLOGINEnumType
	 * @brief                进入主页，保存登录类型
	 * @see
	 * @since    Ver 1.1
	 * @param  
	 * @return void
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-5-26上午11:12:17
	 */
	public static void saveLOGINEnumType(){
		saveLoginFlag(LoginFlag.LOGIN);
	}
	
	/**
	 * 
	 * @n<b>函数名称</b>     :saveEXITEnumType
	 * @brief                退出时，保存登录类型
	 * @see
	 * @since    Ver 1.1
	 * @param  
	 * @return void
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-5-26上午11:19:23
	 */
	public static void saveEXITEnumType(){
		saveLoginFlag(LoginFlag.EXIT);
	}
	
	/**
	 * 
	 * @n<b>函数名称</b>     :saveDEFAULTEnumType
	 * @brief                跳到登录界面
	 * @see
	 * @since    Ver 1.1
	 * @param  
	 * @return void
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-5-26上午11:52:56
	 */
	public static void saveDEFAULTEnumType(){
	   saveLoginFlag(LoginFlag.DEFAULT);
    }
	
	/**
	 * 
	 * @n<b>函数名称</b>     :isLOGINEnumType
	 * @brief                是否进入系统
	 * @see
	 * @since    Ver 1.1
	 * @param  @return
	 * @return boolean
	 * @<b>作者</b>          :  zhy
	 * @<b>创建时间</b>      :  2014-5-26上午11:09:06
	 */
	public static boolean isLOGINEnumType(){
		return getLoginFlag()== LoginFlag.LOGIN;
	}
}
